package com.ruoyi.project.system.file.service.impl;

import java.util.List;

import com.ruoyi.project.system.shiping.domain.Shiping;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import com.ruoyi.common.utils.StringUtils;
import org.springframework.transaction.annotation.Transactional;

import com.ruoyi.project.system.file.mapper.FileMapper;
import com.ruoyi.project.system.file.domain.File;
import com.ruoyi.project.system.file.service.IFileService;
import com.ruoyi.common.utils.text.Convert;

/**
 * 点播文件Service业务层处理
 * 
 * @author ruoyi
 * @date 2024-11-11
 */
@Service
public class FileServiceImpl implements IFileService 
{
    @Autowired
    private FileMapper fileMapper;

    /**
     * 查询点播文件
     * 
     * @param fileId 点播文件主键
     * @return 点播文件
     */
    @Override
    public File selectFileByFileId(Long fileId)
    {
        return fileMapper.selectFileByFileId(fileId);
    }

    /**
     * 查询点播文件列表
     * 
     * @param file 点播文件
     * @return 点播文件
     */
    @Override
    public List<File> selectFileList(File file)
    {
        return fileMapper.selectFileList(file);
    }

    /**
     * 新增点播文件
     * 
     * @param file 点播文件
     * @return 结果
     */
    @Transactional
    @Override
    public int insertFile(File file)
    {
        int rows = fileMapper.insertFile(file);
        insertShiping(file);
        return rows;
    }

    /**
     * 修改点播文件
     * 
     * @param file 点播文件
     * @return 结果
     */
    @Transactional
    @Override
    public int updateFile(File file)
    {
        fileMapper.deleteShipingByShipingId(file.getFileId());
        insertShiping(file);
        return fileMapper.updateFile(file);
    }

    /**
     * 批量删除点播文件
     * 
     * @param fileIds 需要删除的点播文件主键
     * @return 结果
     */
    @Transactional
    @Override
    public int deleteFileByFileIds(String fileIds)
    {
        fileMapper.deleteShipingByShipingIds(Convert.toStrArray(fileIds));
        return fileMapper.deleteFileByFileIds(Convert.toStrArray(fileIds));
    }

    /**
     * 删除点播文件信息
     * 
     * @param fileId 点播文件主键
     * @return 结果
     */
    @Transactional
    @Override
    public int deleteFileByFileId(Long fileId)
    {
        fileMapper.deleteShipingByShipingId(fileId);
        return fileMapper.deleteFileByFileId(fileId);
    }

    /**
     * 新增视频管理信息
     * 
     * @param file 点播文件对象
     */
    public void insertShiping(File file)
    {
        List<Shiping> shipingList = file.getShipingList();
        Long fileId = file.getFileId();
        if (StringUtils.isNotNull(shipingList))
        {
            List<Shiping> list = new ArrayList<Shiping>();
            for (Shiping shiping : shipingList)
            {
                shiping.setShipingId(fileId);
                list.add(shiping);
            }
            if (list.size() > 0)
            {
                fileMapper.batchShiping(list);
            }
        }
    }
}
